﻿using Abp.Application.Services.Dto;
using NetCore.Interactive.Dtos;
using System.Threading.Tasks;

namespace NetCore.Interactive
{
    /// <summary>
    /// 消息通知/交互中心
    /// </summary>
    public interface IInteractiveAppService //: IBaseNetCoreAppService<Notify>
    {
        ///// <summary>
        ///// 测试
        ///// </summary>
        ///// <returns>消息列表</returns>
        //Task<IList<NotifyDto>> GetAllNotifies();

        /// <summary>
        /// 获取消息列表
        /// </summary>
        /// <param name="input">含ProjectId的过滤项</param>
        /// <returns>消息列表</returns>
        Task<IPagedResult<NotifyDto>> GetNotifies(NotifyInput input);

        /// <summary>
        /// 选定项全部标记为已读/未读
        /// </summary>
        /// <param name="input">含选中消息Id集合的过滤项</param>
        /// <returns>true/false标记是否成功</returns>
        Task<bool> ReadOrUnReadAll(NotifyReadOrUnReadAllInput input);

        /// <summary>
        /// 选定项全部删除
        /// </summary>
        /// <param name="input">含选中消息Id集合的过滤项</param>
        /// <returns>true/false删除是否成功</returns>
        Task<bool> DeleteAll(NotifyDeleteAllInput input);

        /// <summary>
        /// 获取登录用户未读消息数
        /// </summary>
        /// <returns>登录用户未读消息数</returns>
        Task<NotifyCountOut> GetLoginUserNotifyCount();

        /// <summary>
        /// 消息只保留两个月 软删除
        /// </summary>
        /// <returns></returns>
        Task ClearDemoData();
    }
}
